﻿using Logging.Entities;
using System;
using System.Collections.Generic;
using System.Data.OracleClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Logging.LogBDD
{
    /// <summary>
    /// Cette classe est une implémentation de l'interface Bridge,
    /// elle permet d'effectuer les requêtes sur la BDD.
    /// </summary>
    public class OracleManager : IBridge
    {
        /// <summary>
        /// 
        /// </summary>
        protected String ConnexionSource
        {
            get;
            private set;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="connexionSource"></param>
        public OracleManager(String connexionSource)
        {
            //ConnexionSource = connexionSource;
            ConnexionSource = "Data Source=DSPP.WORLD;Persist Security Info=True;User Id=RENOVATION;Password=ren165";
        }

        #region IBridge Membres

        public bool Insert(TRACE_APPLICATION trace)
        {
            using (OracleConnection connection = new OracleConnection(ConnexionSource))
            {
                try
                {
                    connection.Open();
                    StringBuilder builderRequest = new StringBuilder();

                    builderRequest.Append(@"INSERT INTO TRACE_APPLICATION(UTILISATEUR_CONNECTE,UTILISATEUR,MACHINE, NOM_APPLICATION,ECRAN,DATE_HEURE,NIVEAU,IDENTIFIANT,DETAIL_MESSAGE) VALUES('");
                    builderRequest.Append(trace.UTILISATEUR_CONNECTE).Append("','").Append(trace.UTILISATEUR).Append("','").Append(trace.MACHINE).Append("','")
                    .Append(trace.NOM_APPLICATION).Append("','").Append(trace.ECRAN).Append("','").Append(trace.DATE_HEURE).Append("','")
                    .Append(trace.NIVEAU).Append("','").Append(trace.IDENTIFIANT).Append("','").Append(trace.DETAIL_MESSAGE).Append("')");

                    OracleCommand command = new OracleCommand(builderRequest.ToString(), connection);
                    int r = command.ExecuteNonQuery();
                    connection.Close();
                }catch(Exception){return false;}
            }

            return true;
        }

        #endregion
    }
}
